import requests
from bs4 import BeautifulSoup
import pymysql

#前置：使用Rquests 获取URL的response
url = "http://www.techlabplt.com:8080/BD-PC/priceList"
resp = requests.get(url)
resp.encoding = 'UTF-8'
'''
使用BS4解析数据,并输出
'''
#1.把页面源代码交给BeautifulSoup进行处理，生成BS对象并指定html解析器
pageHtml = BeautifulSoup(resp.text, "html.parser")
#2.获取html内的div，div的class为tbl-body。里面包含着需要爬取的数据
tableDiv = pageHtml.find("div", attrs={"class": "tbl-body"})
#3.获取所有的tr
dataDiv = tableDiv.findAll("tr")
#4.删除第一个表头数据
del(dataDiv[0])
#5.建立数据库连接，并使用cursor()方法获取操作游标
connect = pymysql.connect(
    # MySQL数据库的IP地址，默认127.0.0.1（代表本地）
   host='127.0.0.1',
    # MySQL数据库的用户名
   user='root',
    # MySQL数据库的密码
   passwd='123456',
    # MySQL数据库服务的端口号；默认为3306
 port=3306,
    # 数据库名称
  db='spider',
    # 字符编码
charset='utf8')
cursor = connect.cursor()
#6.循环遍历每一行的数据
for data in dataDiv:
#得到每一行中的每一列
    oneData = data.findAll("td")
    insertSql = "INSERT INTO products(top_class, sec_class, product_name," \
                "low_price, avg_price, high_price, specs, origin, unit, update_time)" \
                "VALUES ('%s', '%s', '%s', %d, %d, %d, '%s', '%s', '%s', '%s')" \
                % (oneData[0].text, oneData[1].text, oneData[2].text,
                   float(oneData[3].text), float(oneData[4].text), float(oneData[5].text),
                   oneData[6].text, oneData[7].text, oneData[8].text, oneData[9].text)
    try:
        # 执行sql语句
        cursor.execute(insertSql)
    except:
        # 发生异常，回滚
        print("发生异常")
        connect.rollback()
#7.提交到数据库执行并关闭数据库连接
connect.commit()
connect.close()
